package com.star.cat.persitent.service;

import java.util.List;
import java.util.Map;

import com.star.cat.persitent.model.PerModel;

/**
 * 持久化操作
 * @author liguangcai
 * @date 2018/08/31 10:53
 */
public interface PerService {
	
	/**
	 * 获取数据库名
	 * @return
	 */
	String getDBName();
	
	/**
	 * 保存
	 * @param perModel
	 */
	void save(PerModel perModel);
	
	/**
	 * 根据key查询结果
	 * @param key
	 * @return
	 */
	String getByKey(String key);
	
	/**
	 * 根据key查询模型实体
	 * @param key
	 * @return
	 */
	PerModel getModelByKey(String key);
	
	/**
	 * 根据前缀查询结果
	 * @param prefix
	 * @return
	 */
	List<String> getByPrefix(String prefix);
	
	/**
	 * 根据模糊字符串查询结果
	 * @return
	 */
	List<String> getByFuzzy(String fuzzy);
	
	/**
	 * 根据key删除
	 * @param key
	 * @return
	 */
	void delByKey(String key);
	
	/**
	 * 根据前缀删除
	 * @return
	 */
	void delByPrefix(String prefix);
	
	/**
	 * 根据字符串模糊删除
	 * @param fuzzy
	 * @return
	 */
	void delByFuzzy(String fuzzy);
	
	/**
	 * 判断是否存在
	 * @param key
	 * @return
	 */
	boolean exits(String key);
	
	/**
	 * 获取所有
	 * @return
	 */
	Map<String, String> getAll();
	
	/**
	 * 根据前缀获取详情
	 * @param prefix
	 * @return
	 */
	Map<String, String> getAllByPrefix(String prefix);
	
	/**
	 * 根据字符串模糊获取详情
	 * @return
	 */
	Map<String, String> getAllByFuzzy(String fuzzy);

	/**
	 * 过期所有
	 */
	int expiredAll();

	/**
	 * 根据key增加时长（单位：秒）
	 * @param key
	 * @param time
	 */
	int extendTime(String key, Long time);

}























